
#ifndef ARDUINO_BASIC__NO_MAIN

#include "arduino_basic/yield.hpp"


extern void setup();
extern void loop();


void init() __attribute__((weak));

void initVariant() __attribute__((weak));

// 用户可以覆盖掉默认的main 函数，手动控制执行流程
int main() __attribute__((weak));


void init() {
}


void initVariant() {}


int main() {
    init();

    initVariant();

    setup();

    for (;;) {
        loop();

        // 如果yield 里定义了轮询操作，最好在每次loop 后都固定执行一次，
        // 不然要是loop 内部没有执行delay 之类的函数，yield 就不会被调用了。
        yield();
    }

    return 0;
}

#endif